Add a "markup" property.
authorAlexander Larsson <alexl@redhat.com>
Tue, 20 Feb 2001 16:16:22 +0000 (16:16 +0000)
committerAlexander Larsson <alexl@src.gnome.org>
Tue, 20 Feb 2001 16:16:22 +0000 (16:16 +0000)
2001-02-20  Alexander Larsson  <alexl@redhat.com>

* gtk/gtkcellrenderertext.[ch]:
Add a "markup" property.

* gtk/treestoretest.c:
Use the markup property, remove some leftover stuff from
GtkTreeModelMapping.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkcellrenderertext.c
gtk/gtkcellrenderertext.h
gtk/treestoretest.c
tests/treestoretest.c

index 72fc3f592ad14a231fd496fc18b4b8284631890c..6f499f155d98e7406daae2fb49cf132299cf2001 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2001-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * gtk/gtkcellrenderertext.[ch]:
+       Add a "markup" property.
+
+       * gtk/treestoretest.c:
+       Use the markup property, remove some leftover stuff from
+       GtkTreeModelMapping.
+
 2001-02-20  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_set_selectable):
index 72fc3f592ad14a231fd496fc18b4b8284631890c..6f499f155d98e7406daae2fb49cf132299cf2001 100644 (file)
@@ -1,3 +1,12 @@
+2001-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * gtk/gtkcellrenderertext.[ch]:
+       Add a "markup" property.
+
+       * gtk/treestoretest.c:
+       Use the markup property, remove some leftover stuff from
+       GtkTreeModelMapping.
+
 2001-02-20  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_set_selectable):
index 72fc3f592ad14a231fd496fc18b4b8284631890c..6f499f155d98e7406daae2fb49cf132299cf2001 100644 (file)
@@ -1,3 +1,12 @@
+2001-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * gtk/gtkcellrenderertext.[ch]:
+       Add a "markup" property.
+
+       * gtk/treestoretest.c:
+       Use the markup property, remove some leftover stuff from
+       GtkTreeModelMapping.
+
 2001-02-20  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_set_selectable):
index 72fc3f592ad14a231fd496fc18b4b8284631890c..6f499f155d98e7406daae2fb49cf132299cf2001 100644 (file)
@@ -1,3 +1,12 @@
+2001-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * gtk/gtkcellrenderertext.[ch]:
+       Add a "markup" property.
+
+       * gtk/treestoretest.c:
+       Use the markup property, remove some leftover stuff from
+       GtkTreeModelMapping.
+
 2001-02-20  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_set_selectable):
index 72fc3f592ad14a231fd496fc18b4b8284631890c..6f499f155d98e7406daae2fb49cf132299cf2001 100644 (file)
@@ -1,3 +1,12 @@
+2001-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * gtk/gtkcellrenderertext.[ch]:
+       Add a "markup" property.
+
+       * gtk/treestoretest.c:
+       Use the markup property, remove some leftover stuff from
+       GtkTreeModelMapping.
+
 2001-02-20  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_set_selectable):
index 72fc3f592ad14a231fd496fc18b4b8284631890c..6f499f155d98e7406daae2fb49cf132299cf2001 100644 (file)
@@ -1,3 +1,12 @@
+2001-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * gtk/gtkcellrenderertext.[ch]:
+       Add a "markup" property.
+
+       * gtk/treestoretest.c:
+       Use the markup property, remove some leftover stuff from
+       GtkTreeModelMapping.
+
 2001-02-20  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_set_selectable):
index 72fc3f592ad14a231fd496fc18b4b8284631890c..6f499f155d98e7406daae2fb49cf132299cf2001 100644 (file)
@@ -1,3 +1,12 @@
+2001-02-20  Alexander Larsson  <alexl@redhat.com>
+
+       * gtk/gtkcellrenderertext.[ch]:
+       Add a "markup" property.
+
+       * gtk/treestoretest.c:
+       Use the markup property, remove some leftover stuff from
+       GtkTreeModelMapping.
+
 2001-02-20  Alexander Larsson  <alexl@redhat.com>
 
        * gtk/gtklabel.c (gtk_label_set_selectable):
index cf803dd1b8cde3f907b07f13e3dca546df986200..a37a728705a9e115bf60e046064a949a9b1d71a0 100644 (file)
@@ -53,6 +53,7 @@ enum {
   PROP_0,
 
   PROP_TEXT,
+  PROP_MARKUP,
   
   /* Style args */
   PROP_BACKGROUND,
@@ -149,6 +150,14 @@ gtk_cell_renderer_text_class_init (GtkCellRendererTextClass *class)
                                                         NULL,
                                                         G_PARAM_READWRITE));
   
+  g_object_class_install_property (object_class,
+                                   PROP_MARKUP,
+                                   g_param_spec_string ("markup",
+                                                        _("Markup"),
+                                                        _("Marked up text to render"),
+                                                        NULL,
+                                                        G_PARAM_WRITABLE));
+  
   g_object_class_install_property (object_class,
                                    PROP_BACKGROUND,
                                    g_param_spec_string ("background",
@@ -364,7 +373,10 @@ gtk_cell_renderer_text_finalize (GObject *object)
 
   if (celltext->text)
     g_free (celltext->text);
-  
+
+  if (celltext->extra_attrs)
+    pango_attr_list_unref (celltext->extra_attrs);
+
   (* G_OBJECT_CLASS (parent_class)->finalize) (object);
 }
 
@@ -516,6 +528,7 @@ gtk_cell_renderer_text_get_property (GObject        *object,
       
     case PROP_BACKGROUND:
     case PROP_FOREGROUND:
+    case PROP_MARKUP:
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
       break;
@@ -655,6 +668,39 @@ gtk_cell_renderer_text_set_property (GObject      *object,
       celltext->text = g_strdup (g_value_get_string (value));
       break;
       
+    case PROP_MARKUP:
+      {
+       const gchar *str;
+       gchar *text = NULL;
+       GError *error = NULL;
+       PangoAttrList *attrs = NULL;
+       
+       if (celltext->text)
+         g_free (celltext->text);
+
+       if (celltext->extra_attrs)
+         pango_attr_list_unref (celltext->extra_attrs);
+
+       str = g_value_get_string (value);
+       if (str && !pango_parse_markup (str,
+                                       -1,
+                                       0,
+                                       &attrs,
+                                       &text,
+                                       NULL,
+                                       &error))
+         {
+           g_warning ("Failed to set cell text from markup due to error parsing markup: %s",
+                      error->message);
+           g_error_free (error);
+           return;
+         }
+       
+       celltext->text = text;
+       celltext->extra_attrs = attrs;
+      }
+      break;
+      
     case PROP_BACKGROUND:
       {
         GdkColor color;
@@ -893,8 +939,11 @@ get_layout (GtkCellRendererText *celltext,
   PangoUnderline uline;
   
   layout = gtk_widget_create_pango_layout (widget, celltext->text);
-  
-  attr_list = pango_attr_list_new ();
+
+  if (celltext->extra_attrs)
+    attr_list = pango_attr_list_copy (celltext->extra_attrs);
+  else
+    attr_list = pango_attr_list_new ();
 
   if (will_render)
     {
index b2270b3de0d1cc4a3524b978034068e0cd71e6a5..fd906a3350a0bff6a5e6180661ddc49f347da235 100644 (file)
@@ -46,6 +46,8 @@ struct _GtkCellRendererText
   PangoFontDescription font;
   PangoColor foreground;
   PangoColor background;
+  
+  PangoAttrList *extra_attrs;
 
   PangoUnderline underline_style;
 
index 8244bb493155e886bfcfcf01a37f586e54778fe3..1b2222f2b480f7bac7de80a8e4735018da8021dd 100644 (file)
@@ -21,7 +21,7 @@ node_set (GtkTreeIter *iter)
   gint n;
   gchar *str;
 
-  str = g_strdup_printf ("Row (%d)", i++);
+  str = g_strdup_printf ("Row (<span color=\"red\">%d</span>)", i++);
   gtk_tree_store_set (base_model, iter, 0, str, -1);
   g_free (str);
 
@@ -236,9 +236,6 @@ make_window (gint view_type)
     case 1:
       gtk_window_set_title (GTK_WINDOW (window), "Sorted list");
       break;
-    case 2:
-      gtk_window_set_title (GTK_WINDOW (window), "Uppercase flipped list");
-      break;
     }
 
   vbox = gtk_vbox_new (FALSE, 8);
@@ -321,7 +318,7 @@ make_window (gint view_type)
 
   /* The selected column */
   cell = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Node ID", cell, "text", 0, NULL);
+  column = gtk_tree_view_column_new_with_attributes ("Node ID", cell, "markup", 0, NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
 
   cell = gtk_cell_renderer_text_new ();
@@ -352,7 +349,6 @@ main (int argc, char *argv[])
   /* FIXME: reverse this */
   make_window (0);
   make_window (1);
-  make_window (2);
 
   gtk_main ();
 
index 8244bb493155e886bfcfcf01a37f586e54778fe3..1b2222f2b480f7bac7de80a8e4735018da8021dd 100644 (file)
@@ -21,7 +21,7 @@ node_set (GtkTreeIter *iter)
   gint n;
   gchar *str;
 
-  str = g_strdup_printf ("Row (%d)", i++);
+  str = g_strdup_printf ("Row (<span color=\"red\">%d</span>)", i++);
   gtk_tree_store_set (base_model, iter, 0, str, -1);
   g_free (str);
 
@@ -236,9 +236,6 @@ make_window (gint view_type)
     case 1:
       gtk_window_set_title (GTK_WINDOW (window), "Sorted list");
       break;
-    case 2:
-      gtk_window_set_title (GTK_WINDOW (window), "Uppercase flipped list");
-      break;
     }
 
   vbox = gtk_vbox_new (FALSE, 8);
@@ -321,7 +318,7 @@ make_window (gint view_type)
 
   /* The selected column */
   cell = gtk_cell_renderer_text_new ();
-  column = gtk_tree_view_column_new_with_attributes ("Node ID", cell, "text", 0, NULL);
+  column = gtk_tree_view_column_new_with_attributes ("Node ID", cell, "markup", 0, NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
 
   cell = gtk_cell_renderer_text_new ();
@@ -352,7 +349,6 @@ main (int argc, char *argv[])
   /* FIXME: reverse this */
   make_window (0);
   make_window (1);
-  make_window (2);
 
   gtk_main ();